import { IRoute } from '@/interface/router'
import { lazy } from 'react'
import asyncRoutes from './asyncRoutes'

const router: Array<IRoute> = [
  {
    title: '错误页面',
    path: '/error/404',
    name: 'Error',
    icon: 'FileUnknownOutlined',
    hidden: true,
    children: [
      {
        title: '404',
        path: '/error/404',
        name: '404',
        icon: 'FileTextOutlined',
        component: lazy(() => import(/* webpackChunkName: "404" */ '@/views/error/404')),
      },
    ],
  },
]

const formatRoutes = (menus: any): Array<IRoute> => {
  const routes: IRoute[] = []
  if (!menus?.length) {
    return []
  }

  menus.forEach((menu) => {
    const { name, code, path, iconClass } = menu
    const route: IRoute = {
      title: name,
      path,
      name: code,
      icon: iconClass,
      key: code,
      component: asyncRoutes[code],
    }
    if (menu?.children?.length) {
      route.children = []
      route.children.push(...formatRoutes(menu.children))
    }
    routes.push(route)
  })
  return routes
}
const setRouter = (menus?:any): Array<IRoute> => {
  let userRouter: IRoute[] = []
  if (menus?.length) {
    const asyncRouter = formatRoutes(menus)
    asyncRouter.push(...router)
    userRouter = asyncRouter
  } else {
    userRouter = router
  }
  return userRouter
}

export default setRouter
